﻿using System;
using System.Collections.Generic;

namespace Sebrae.Academico.Trilhas.Dominio.Classes
{
    public class Usuario : EntidadeBasicaPorId
    {
        public virtual string Nome { get; set; }
        public virtual Uf UF { get; set; }
        public virtual NivelOcupacional NivelOcupacional { get; set; }
        public virtual string TipoDocumento { get; set; }
        public virtual string MiniCurriculo { get; set; }
        public virtual string NumeroIdentidade { get; set; }
        public virtual string OrgaoEmissor { get; set; }
        public virtual DateTime? DataExpedicaoIdentidade { get; set; }
        public virtual DateTime? DataNascimento { get; set; }
        public virtual string Sexo { get; set; }
        public virtual string Nacionalidade { get; set; }
        public virtual string EstadoCivil { get; set; }
        public virtual string NomeMae { get; set; }
        public virtual string NomePai { get; set; }
        public virtual string Email { get; set; }
        public virtual string Matricula { get; set; }
        public virtual string CPF { get; set; }
        public virtual DateTime? DataAdmissao { get; set; }
        public virtual DateTime? DataAtualizacao { get; set; }
        public virtual string Situacao { get; set; }
        public virtual string Endereco { get; set; }
        public virtual string Endereco2 { get; set; }
        public virtual string SenhaLms { get; set; }
        public virtual string LoginLms { get; set; }
        public virtual string TelResidencial { get; set; }
        public virtual string Estado { get; set; }
        public virtual string Cep { get; set; }
        public virtual string Bairro { get; set; }
        public virtual string TelCelular { get; set; }
        public virtual string Cidade { get; set; }
        public virtual string MaterialDidatico { get; set; }
        public virtual string Complemento { get; set; }
        public virtual string Pais { get; set; }
        public virtual string Pais2 { get; set; }
        public virtual string Unidade { get; set; }
        public virtual string Instituicao { get; set; }
        public virtual string Cep2 { get; set; }
        public virtual string Complemento2 { get; set; }
        public virtual string Bairro2 { get; set; }
        public virtual string Cidade2 { get; set; }
        public virtual string Escolaridade { get; set; }
        public virtual string Estado2 { get; set; }
        public virtual int? CodigoCampoConhecimento { get; set; }
        public virtual string AnoConclusao { get; set; }
        public virtual string TipoInstituicao { get; set; }
        public virtual string Naturalidade { get; set; }
        public virtual string SenhaAd { get; set; }
        public virtual string LoginAd { get; set; }
        public virtual int? PermissaoAcesso { get; set; }

        public virtual IList<UsuarioPerfil> Perfis { get; set; }
        public virtual IList<MatriculaPrograma> MatriculasPrograma { get; set; }

        public virtual IList<Trilha> Trilhas { get; set; }
        public virtual Usuario UsuarioAtualizacao { get; set; }

        //public Usuario()
        //{
        //    this.Perfis = new List<UsuarioPerfil>();
        //    this.MatriculasPrograma = new List<MatriculaPrograma>();
        //}

        //public virtual void AdicionarPerfil(Perfil perfil)
        //{
        //    UsuarioPerfil usuarioPerfil = new UsuarioPerfil() { Perfil = perfil, Usuario = this};
        //    if (!Perfis.Contains(usuarioPerfil))
        //        Perfis.Add(usuarioPerfil);
        //}

        //public virtual void RemoverPerfil(Perfil perfil)
        //{
        //    UsuarioPerfil usuarioPerfil = new UsuarioPerfil() { Perfil = perfil, Usuario = this };
        //    if (!this.Perfis.Contains(usuarioPerfil))
        //        Perfis.Remove(usuarioPerfil);
        //}


        //public virtual void AdicionarPrograma(Programa programa)
        //{
        //    MatriculaPrograma matriculaPrograma = new MatriculaPrograma() { Programa = programa, Usuario = this };
        //    if (!MatriculasPrograma.Contains(matriculaPrograma))
        //        MatriculasPrograma.Add(matriculaPrograma);
        //}

        //public virtual void RemoverPrograma(Programa programa)
        //{
        //    MatriculaPrograma matriculaPrograma = new MatriculaPrograma() { Programa = programa, Usuario = this };
        //    if (!MatriculasPrograma.Contains(matriculaPrograma))
        //        MatriculasPrograma.Add(matriculaPrograma);
        //}
    }
}
